/**
 * @file Master_task.c
 * @author Linquan  
 * @brief 
 * @version 1.0
 * @date 2024-07-06
 * 
 * @copyright Copyright (c) 2024
 * 
 */


#include "Master_task.h"
#include <stdio.h>
#include <stdint.h>
#include "tasks.h"
#include "sys_tick.h"
#include "app_config.h"
#include "export.h"
/* app code head file: */


struct tasks_t Master_tasklist;
static uint8_t Master_tasksbuf[sizeof(struct task_node_t)* 32];


/**
 * @brief 任务时基回调函数
 * 
 */
static void Master_task_tick_callbak()
{
	task_time_add(&Master_tasklist);
}

/**
 * @brief 主控任务初始化
 * 
 * @param ptr 一个任务链表
 * @return int 
 */
void Master_taskInit(void *task_list_ptr)
{
	struct tasks_t* task_list = (struct tasks_t*)task_list_ptr;

	tasks_init_withbuf(task_list, Master_tasksbuf, sizeof(Master_tasksbuf), TASK_TICK_MS(10) );// 10 代表中断回调一次是10ms	
	sys_timer_callback_add(&Master_task_tick_callbak); // 赋值 定时器回调函数
}
EXPORT_Lv2_PREV(Master_taskInit, &Master_tasklist);

/**
 * @brief 主控任务调度
 * 
 * @param task_list_ptr 一个任务链表
 * @return int 
 */
void  Master_Task_Schedule(void *task_list_ptr)
{ 
	struct tasks_t* task_list = (struct tasks_t*)task_list_ptr;
	tasks_schedule(task_list);
}
EXPORT_Lv7_APP_MANGE(Master_Task_Schedule, &Master_tasklist);

/**
 * @brief 应用层的任务添加,无参数传入
 * 
 */
void Master_task_add(task_fn *func,  int delay_ms)
{	
	tasks_add_task(&Master_tasklist, delay_ms, func, TASK_PARAM_NONE());// 这里的时间（0）代表任务第一次执行延时的间隔，无间隔。
}

/**
 * @brief 应用层的任务添加,带参数传入
 * 
 * @param func 
 * @param delay_ms 
 */
void Master_task_add_with_para(task_fn *func,  int delay_ms, task_param_t args)
{	
	tasks_add_task(&Master_tasklist, delay_ms, func, args);// 这里的时间（0）代表任务第一次执行延时的间隔，无间隔。
}



/************************/


// #endif


